"""
绘制小猪佩奇
"""
from turtle import *

def nose(x, y):
    """画鼻子"""
    penup()  # 抬起画笔，移动时不绘制
    # 将海龟移动到指定的坐标
    goto(x, y)
    pendown()  # 放下画笔，开始绘制
    # 设置海龟的方向（0-东、90-北、180-西、270-南）
    setheading(-30)
    begin_fill()  # 开始填充颜色
    a = 0.4
    for i in range(120):
        if 0 <= i < 30 or 60 <= i < 90:
            a = a + 0.08
            # 向左转3度
            left(3)
            # 向前走a的步长
            forward(a)
        else:
            a = a - 0.08
            left(3)
            forward(a)
    end_fill()  # 结束填充颜色
    penup()  # 抬起画笔
    setheading(90)  # 设置方向为北
    forward(25)  # 向前移动25步
    setheading(0)  # 设置方向为东
    forward(10)  # 向前移动10步
    pendown()  # 放下画笔
    # 设置画笔的颜色(红, 绿, 蓝)
    pencolor(255, 155, 192)
    setheading(10)  # 设置方向为10度
    begin_fill()  # 开始填充颜色
    circle(5)  # 画一个半径为5的圆
    color(160, 82, 45)  # 设置填充颜色
    end_fill()  # 结束填充颜色
    penup()  # 抬起画笔
    setheading(0)  # 设置方向为东
    forward(20)  # 向前移动20步
    pendown()  # 放下画笔
    pencolor(255, 155, 192)  # 设置画笔颜色
    setheading(10)  # 设置方向为10度
    begin_fill()  # 开始填充颜色
    circle(5)  # 画一个半径为5的圆
    color(160, 82, 45)  # 设置填充颜色
    end_fill()  # 结束填充颜色

def head(x, y):
    """画头"""
    color((255, 155, 192), "pink")  # 设置画笔和填充颜色
    penup()  # 抬起画笔
    goto(x, y)  # 移动到指定位置
    setheading(0)  # 设置方向为东
    pendown()  # 放下画笔
    begin_fill()  # 开始填充颜色
    setheading(180)  # 设置方向为西
    circle(300, -30)  # 画一个半径为300的圆，逆时针30度
    circle(100, -60)  # 画一个半径为100的圆，逆时针60度
    circle(80, -100)  # 画一个半径为80的圆，逆时针100度
    circle(150, -20)  # 画一个半径为150的圆，逆时针20度
    circle(60, -95)  # 画一个半径为60的圆，逆时针95度
    setheading(161)  # 设置方向为161度
    circle(-300, 15)  # 画一个半径为300的圆，顺时针15度
    penup()  # 抬起画笔
    goto(-100, 100)  # 移动到指定位置
    pendown()  # 放下画笔
    setheading(-30)  # 设置方向为-30度
    a = 0.4
    for i in range(60):
        if 0 <= i < 30 or 60 <= i < 90:
            a = a + 0.08
            lt(3)  # 左转3度
            fd(a)  # 向前移动a步
        else:
            a = a - 0.08
            lt(3)  # 左转3度
            fd(a)  # 向前移动a步
    end_fill()  # 结束填充颜色

def ears(x, y):
    """画耳朵"""
    color((255, 155, 192), "pink")  # 设置画笔和填充颜色
    penup()  # 抬起画笔
    goto(x, y)  # 移动到指定位置
    pendown()  # 放下画笔
    begin_fill()  # 开始填充颜色
    setheading(100)  # 设置方向为100度
    circle(-50, 50)  # 画一个半径为50的圆，顺时针50度
    circle(-10, 120)  # 画一个半径为10的圆，顺时针120度
    circle(-50, 54)  # 画一个半径为50的圆，顺时针54度
    end_fill()  # 结束填充颜色
    penup()  # 抬起画笔
    setheading(90)  # 设置方向为北
    forward(-12)  # 向前移动-12步（即向后移动12步）
    setheading(0)  # 设置方向为东
    forward(30)  # 向前移动30步
    pendown()  # 放下画笔
    begin_fill()  # 开始填充颜色
    setheading(100)  # 设置方向为100度
    circle(-50, 50)  # 画一个半径为50的圆，顺时针50度
    circle(-10, 120)  # 画一个半径为10的圆，顺时针120度
    circle(-50, 56)  # 画一个半径为50的圆，顺时针56度
    end_fill()  # 结束填充颜色

def eyes(x, y):
    """画眼睛"""
    color((255, 155, 192), "white")  # 设置画笔和填充颜色
    penup()  # 抬起画笔
    setheading(90)  # 设置方向为北
    forward(-20)  # 向前移动-20步（即向后移动20步）
    setheading(0)  # 设置方向为东
    forward(-95)  # 向前移动-95步（即向后移动95步）
    pendown()  # 放下画笔
    begin_fill()  # 开始填充颜色
    circle(15)  # 画一个半径为15的圆
    end_fill()  # 结束填充颜色
    color("black")  # 设置画笔颜色为黑色
    penup()  # 抬起画笔
    setheading(90)  # 设置方向为北
    forward(12)  # 向前移动12步
    setheading(0)  # 设置方向为东
    forward(-3)  # 向前移动-3步（即向后移动3步）
    pendown()  # 放下画笔
    begin_fill()  # 开始填充颜色
    circle(3)  # 画一个半径为3的圆
    end_fill()  # 结束填充颜色
    color((255, 155, 192), "white")  # 设置画笔和填充颜色
    penup()  # 抬起画笔
    seth(90)  # 设置方向为北
    forward(-25)  # 向前移动-25步（即向后移动25步）
    seth(0)  # 设置方向为东
    forward(40)  # 向前移动40步
    pendown()  # 放下画笔
    begin_fill()  # 开始填充颜色
    circle(15)  # 画一个半径为15的圆
    end_fill()  # 结束填充颜色
    color("black")  # 设置画笔颜色为黑色
    penup()  # 抬起画笔
    setheading(90)  # 设置方向为北
    forward(12)  # 向前移动12步
    setheading(0)  # 设置方向为东
    forward(-3)  # 向前移动-3步（即向后移动3步）
    pendown()  # 放下画笔
    begin_fill()  # 开始填充颜色
    circle(3)  # 画一个半径为3的圆
    end_fill()  # 结束填充颜色

def cheek(x, y):
    """画脸颊"""
    color((255, 155, 192))  # 设置画笔颜色
    penup()  # 抬起画笔
    goto(x, y)  # 移动到指定位置
    pendown()  # 放下画笔
    setheading(0)  # 设置方向为东
    begin_fill()  # 开始填充颜色
    circle(30)  # 画一个半径为30的圆
    end_fill()  # 结束填充颜色

def mouth(x, y):
    """画嘴巴"""
    color(239, 69, 19)  # 设置画笔颜色
    penup()  # 抬起画笔
    goto(x, y)  # 移动到指定位置
    pendown()  # 放下画笔
    setheading(-80)  # 设置方向为-80度
    circle(30, 40)  # 画一个半径为30的圆，逆时针40度
    circle(40, 80)  # 画一个半径为40的圆，逆时针80度

def setting():
    """设置参数"""
    pensize(4)  # 设置画笔宽度
    # 隐藏海龟
    hideturtle()
    colormode(255)  # 设置颜色模式为RGB
    color((255, 155, 192), "pink")  # 设置画笔和填充颜色
    setup(840, 500)  # 设置窗口大小
    speed(10)  # 设置绘图速度

def main():
    """主函数"""
    setting()  # 调用设置函数
    nose(-100, 100)  # 画鼻子
    head(-69, 167)  # 画头
    ears(0, 160)  # 画耳朵
    eyes(0, 140)  # 画眼睛
    cheek(80, 10)  # 画脸颊
    mouth(-20, 30)  # 画嘴巴
    done()  # 结束绘图

if __name__ == '__main__':
    main()  # 运行主函数